<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- qcldevice.cpp -->
  <title>QCLDevice Class Reference</title>
  <link rel="stylesheet" type="text/css" href="style/style.css" />
  <script src="scripts/jquery.js" type="text/javascript"></script>
  <script src="scripts/functions.js" type="text/javascript"></script>
  <script src="./scripts/superfish.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="style/superfish.css" />  <script src="./scripts/narrow.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="style/narrow.css" />
  <!--[if IE]>
<meta name="MSSmartTagsPreventParsing" content="true">
<meta http-equiv="imagetoolbar" content="no">
<![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="style/style_ie6.css">
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="style/style_ie7.css">
<![endif]-->
<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="style/style_ie8.css">
<![endif]-->
</head>
<body class="" onload="CheckEmptyAndLoadList();">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="left" valign="top" width="150"><img src="images/qt-logo.png" align="left" border="0" />&nbsp;&nbsp;<img src="images/qtopencl-logo.png" border="0" /></td>
<td width="1">&nbsp;&nbsp;</td><td class="postheader" valign="center"> <a href="index.html"><font color="#004faf">Home</font></a>&nbsp;&middot; <a href="qtopencl-all-classes.html"><font color="#004faf">All Classes</font></a></td>
</table>              <li><a href="modules.html">Modules</a></li>              <li>QtCL</li>
              <li>QCLDevice</li>
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#public-types">Public Types</a></li>
<li class="level1"><a href="#public-functions">Public Functions</a></li>
<li class="level1"><a href="#static-public-members">Static Public Members</a></li>
<li class="level1"><a href="#details">Detailed Description</a></li>
</ul>
</div>
<h1 class="title">QCLDevice Class Reference</h1>
<!-- $$$QCLDevice-brief -->
<p>The QCLDevice class represents an OpenCL device definition. <a href="#details">More...</a></p>
<!-- @@@QCLDevice -->
<pre class="highlightedCode brush: cpp">    #include &lt;QCLDevice&gt;</pre><p>This class was introduced in QtOpenCL 4.7.</p>
<ul>
<li><a href="qcldevice-members.html">List of all members, including inherited members</a></li>
</ul>
<a name="public-types"></a>
<h2>Public Types</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#CacheType-enum">CacheType</a></b> { NoCache, ReadOnlyCache, ReadWriteCache }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#DeviceType-enum">DeviceType</a></b> { Default, CPU, GPU, Accelerator, All }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> flags </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#DeviceType-enum">DeviceTypes</a></b></td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> flags </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#FloatCapability-enum">FloatCapabilities</a></b></td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#FloatCapability-enum">FloatCapability</a></b> { NotSupported, Denorm, InfinityNaN, RoundNearest, ..., FusedMultiplyAdd }</td></tr>
</table>
<a name="public-functions"></a>
<h2>Public Functions</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#QCLDevice">QCLDevice</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#QCLDevice-2">QCLDevice</a></b> ( cl_device_id <i>id</i> )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#addressBits">addressBits</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QSysInfo::Endian </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#byteOrder">byteOrder</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#clockFrequency">clockFrequency</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#computeUnits">computeUnits</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#defaultAlignment">defaultAlignment</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> cl_device_id </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#deviceId">deviceId</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLDevice::DeviceTypes </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#deviceType">deviceType</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLDevice::FloatCapabilities </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#doubleCapabilities">doubleCapabilities</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#driverVersion">driverVersion</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QStringList </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#extensions">extensions</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLDevice::FloatCapabilities </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#floatCapabilities">floatCapabilities</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#globalMemoryCacheLineSize">globalMemoryCacheLineSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#globalMemoryCacheSize">globalMemoryCacheSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLDevice::CacheType </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#globalMemoryCacheType">globalMemoryCacheType</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#globalMemorySize">globalMemorySize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLDevice::FloatCapabilities </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#halfFloatCapabilities">halfFloatCapabilities</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasCompiler">hasCompiler</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasDouble">hasDouble</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasErrorCorrectingMemory">hasErrorCorrectingMemory</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasExtension">hasExtension</a></b> ( const char * <i>name</i> ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasHalfFloat">hasHalfFloat</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasImage2D">hasImage2D</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasImage3D">hasImage3D</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasNativeKernels">hasNativeKernels</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasOutOfOrderExecution">hasOutOfOrderExecution</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasUnifiedMemory">hasUnifiedMemory</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#hasWritableImage3D">hasWritableImage3D</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#isAvailable">isAvailable</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#isEmbeddedProfile">isEmbeddedProfile</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#isFullProfile">isFullProfile</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#isLocalMemorySeparate">isLocalMemorySeparate</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#isNull">isNull</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#languageVersion">languageVersion</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#localMemorySize">localMemorySize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumAllocationSize">maximumAllocationSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumConstantArguments">maximumConstantArguments</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumConstantBufferSize">maximumConstantBufferSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QSize </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumImage2DSize">maximumImage2DSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLWorkSize </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumImage3DSize">maximumImage3DSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumParameterBytes">maximumParameterBytes</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumReadImages">maximumReadImages</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumSamplers">maximumSamplers</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLWorkSize </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumWorkItemSize">maximumWorkItemSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> size_t </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumWorkItemsPerGroup">maximumWorkItemsPerGroup</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#maximumWriteImages">maximumWriteImages</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#minimumAlignment">minimumAlignment</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#name">name</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#nativeCharVectorSize">nativeCharVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#nativeDoubleVectorSize">nativeDoubleVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#nativeFloatVectorSize">nativeFloatVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#nativeHalfFloatVectorSize">nativeHalfFloatVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#nativeIntVectorSize">nativeIntVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#nativeLongVectorSize">nativeLongVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#nativeShortVectorSize">nativeShortVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLPlatform </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#platform">platform</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#preferredCharVectorSize">preferredCharVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#preferredDoubleVectorSize">preferredDoubleVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#preferredFloatVectorSize">preferredFloatVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#preferredHalfFloatVectorSize">preferredHalfFloatVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#preferredIntVectorSize">preferredIntVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#preferredLongVectorSize">preferredLongVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> int </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#preferredShortVectorSize">preferredShortVectorSize</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#profile">profile</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> quint64 </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#profilingTimerResolution">profilingTimerResolution</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#vendor">vendor</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> uint </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#vendorId">vendorId</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#version">version</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QCLPlatform::VersionFlags </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#versionFlags">versionFlags</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#operator-not-eq">operator!=</a></b> ( const QCLDevice &amp; <i>other</i> ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> bool </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#operator-eq-eq">operator==</a></b> ( const QCLDevice &amp; <i>other</i> ) const</td></tr>
</table>
<a name="static-public-members"></a>
<h2>Static Public Members</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> QList&lt;QCLDevice&gt; </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#allDevices">allDevices</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QList&lt;QCLDevice&gt; </td><td class="memItemRight bottomAlign"><b><a href="qcldevice.html#devices">devices</a></b> ( QCLDevice::DeviceTypes <i>types</i>, const QCLPlatform &amp; <i>platform</i> = QCLPlatform() )</td></tr>
</table>
<a name="details"></a>
<!-- $$$QCLDevice-description -->
<div class="descr">
<h2>Detailed Description</h2>
<p>The QCLDevice class represents an OpenCL device definition.</p>
<p>A device is a collection of compute units that can be used by a <a href="qclcontext.html">QCLContext</a> to build programs, execute kernels, and queue commands.</p>
<p>Devices have an associated <a href="qcldevice.html#deviceType">deviceType</a>(), which is usually <a href="qcldevice.html#DeviceType-enum">QCLDevice::CPU</a> or <a href="qcldevice.html#DeviceType-enum">QCLDevice::GPU</a>. CPU devices typically execute on the host CPU. GPU devices typically execute on the same computational resource as the system's OpenGL implementation, and it may be possible to share OpenGL objects with OpenCL using the facilities of <a href="qclcontextgl.html">QCLContextGL</a>.</p>
<p>The <a href="qcldevice.html#devices">devices</a>() function can be used to find all devices of a specific type, optionally constrained by the <a href="qclplatform.html">QCLPlatform</a> they belong to.</p>
<p>The <a href="clinfo.html">clinfo</a> utility program can be used to dump all of the devices that are supported by the system's OpenCL implementation.</p>
</div>
<p>See also <a href="qclplatform.html">QCLPlatform</a> and <a href="qclcontext.html">QCLContext</a>.</p>
<!-- @@@QCLDevice -->
<div class="types">
<h2>Member Type Documentation</h2>
<!-- $$$CacheType$$$NoCache$$$ReadOnlyCache$$$ReadWriteCache -->
<h3 class="fn"><a name="CacheType-enum"></a>enum QCLDevice::CacheType</h3>
<p>This enum defines the type of global memory cache that is supported by an OpenCL device.</p>
<table class="valuelist"><tr class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td  class="topAlign"><tt>QCLDevice::NoCache</tt></td><td class=" topAlign"><tt>0</tt></td><td  class="topAlign">No global memory cache.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::ReadOnlyCache</tt></td><td class=" topAlign"><tt>1</tt></td><td  class="topAlign">Read-only global memory cache.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::ReadWriteCache</tt></td><td class=" topAlign"><tt>2</tt></td><td  class="topAlign">Read-write global memory cache.</td></tr>
</table>
<!-- @@@CacheType -->
<!-- $$$DeviceType$$$Default$$$CPU$$$GPU$$$Accelerator$$$All -->
<h3 class="flags"><a name="DeviceType-enum"></a>enum QCLDevice::DeviceType<br/>flags QCLDevice::DeviceTypes</h3>
<p>This enum defines the type of OpenCL device that is represented by a <a href="qcldevice.html">QCLDevice</a> object.</p>
<table class="valuelist"><tr class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td  class="topAlign"><tt>QCLDevice::Default</tt></td><td class=" topAlign"><tt>0x00000001</tt></td><td  class="topAlign">The default OpenCL device.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::CPU</tt></td><td class=" topAlign"><tt>0x00000002</tt></td><td  class="topAlign">The host CPU within the OpenCL system.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::GPU</tt></td><td class=" topAlign"><tt>0x00000004</tt></td><td  class="topAlign">An OpenCL device that is also an OpenGL GPU.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::Accelerator</tt></td><td class=" topAlign"><tt>0x00000008</tt></td><td  class="topAlign">Dedicated OpenCL accelerator.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::All</tt></td><td class=" topAlign"><tt>0xFFFFFFFF</tt></td><td  class="topAlign">All OpenCL device types.</td></tr>
</table>
<p>The DeviceTypes type is a typedef for <a href="qflags.html">QFlags</a>&lt;DeviceType&gt;. It stores an OR combination of DeviceType values.</p>
<!-- @@@DeviceType -->
<!-- $$$FloatCapability$$$NotSupported$$$Denorm$$$InfinityNaN$$$RoundNearest$$$RoundZero$$$RoundInfinity$$$FusedMultiplyAdd -->
<h3 class="flags"><a name="FloatCapability-enum"></a>enum QCLDevice::FloatCapability<br/>flags QCLDevice::FloatCapabilities</h3>
<p>This enum defines the floating-point capabilities of the <tt>float</tt> or <tt>double</tt> type on an OpenCL device.</p>
<table class="valuelist"><tr class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td  class="topAlign"><tt>QCLDevice::NotSupported</tt></td><td class=" topAlign"><tt>0x0000</tt></td><td  class="topAlign">Returned to indicate that <tt>double</tt> is not supported on the device.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::Denorm</tt></td><td class=" topAlign"><tt>0x0001</tt></td><td  class="topAlign">Denorms are supported.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::InfinityNaN</tt></td><td class=" topAlign"><tt>0x0002</tt></td><td  class="topAlign">Infinity and quiet NaN's are supported.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::RoundNearest</tt></td><td class=" topAlign"><tt>0x0004</tt></td><td  class="topAlign">Round to nearest even rounding mode supported.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::RoundZero</tt></td><td class=" topAlign"><tt>0x0008</tt></td><td  class="topAlign">Round to zero rounding mode supported.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::RoundInfinity</tt></td><td class=" topAlign"><tt>0x0010</tt></td><td  class="topAlign">Round to infinity rounding mode supported.</td></tr>
<tr><td  class="topAlign"><tt>QCLDevice::FusedMultiplyAdd</tt></td><td class=" topAlign"><tt>0x0020</tt></td><td  class="topAlign">IEEE754-2008 fused multiply-add is supported.</td></tr>
</table>
<p>The FloatCapabilities type is a typedef for <a href="qflags.html">QFlags</a>&lt;FloatCapability&gt;. It stores an OR combination of FloatCapability values.</p>
<!-- @@@FloatCapability -->
</div>
<div class="func">
<h2>Member Function Documentation</h2>
<!-- $$$QCLDevice[overload1]$$$QCLDevice -->
<h3 class="fn"><a name="QCLDevice"></a>QCLDevice::QCLDevice ()</h3>
<p>Constructs a default OpenCL device identifier.</p>
<!-- @@@QCLDevice -->
<!-- $$$QCLDevice$$$QCLDevicecl_device_id -->
<h3 class="fn"><a name="QCLDevice-2"></a>QCLDevice::QCLDevice ( cl_device_id <i>id</i> )</h3>
<p>Constructs an OpenCL device identifier that corresponds to the native OpenCL value <i>id</i>.</p>
<!-- @@@QCLDevice -->
<!-- $$$addressBits[overload1]$$$addressBits -->
<h3 class="fn"><a name="addressBits"></a>int QCLDevice::addressBits () const</h3>
<p>Returns the number of address bits used by the device; usually 32 or 64.</p>
<!-- @@@addressBits -->
<!-- $$$allDevices[overload1]$$$allDevices -->
<h3 class="fn"><a name="allDevices"></a>QList&lt;QCLDevice&gt; QCLDevice::allDevices ()<tt> [static]</tt></h3>
<p>Returns a list of all OpenCL devices on all platforms on this system.</p>
<p>See also <a href="qcldevice.html#devices">devices</a>().</p>
<!-- @@@allDevices -->
<!-- $$$byteOrder[overload1]$$$byteOrder -->
<h3 class="fn"><a name="byteOrder"></a>QSysInfo::Endian QCLDevice::byteOrder () const</h3>
<p>Returns the byte order of the device, indicating little endian or big endian.</p>
<!-- @@@byteOrder -->
<!-- $$$clockFrequency[overload1]$$$clockFrequency -->
<h3 class="fn"><a name="clockFrequency"></a>int QCLDevice::clockFrequency () const</h3>
<p>Returns the maximum clock frequency for this device in MHz.</p>
<!-- @@@clockFrequency -->
<!-- $$$computeUnits[overload1]$$$computeUnits -->
<h3 class="fn"><a name="computeUnits"></a>int QCLDevice::computeUnits () const</h3>
<p>Returns the number of parallel compute units on the device.</p>
<!-- @@@computeUnits -->
<!-- $$$defaultAlignment[overload1]$$$defaultAlignment -->
<h3 class="fn"><a name="defaultAlignment"></a>int QCLDevice::defaultAlignment () const</h3>
<p>Returns the default alignment for allocated memory in bytes.</p>
<p>See also <a href="qcldevice.html#minimumAlignment">minimumAlignment</a>().</p>
<!-- @@@defaultAlignment -->
<!-- $$$deviceId[overload1]$$$deviceId -->
<h3 class="fn"><a name="deviceId"></a>cl_device_id QCLDevice::deviceId () const</h3>
<p>Returns the native OpenCL device identifier for this object.</p>
<!-- @@@deviceId -->
<!-- $$$deviceType[overload1]$$$deviceType -->
<h3 class="fn"><a name="deviceType"></a><a href="qcldevice.html#DeviceType-enum">QCLDevice::DeviceTypes</a> QCLDevice::deviceType () const</h3>
<p>Returns the type of this device. It is possible for a device to have more than one type.</p>
<!-- @@@deviceType -->
<!-- $$$devices[overload1]$$$devicesQCLDevice::DeviceTypesconstQCLPlatform& -->
<h3 class="fn"><a name="devices"></a>QList&lt;QCLDevice&gt; QCLDevice::devices ( <a href="qcldevice.html#DeviceType-enum">QCLDevice::DeviceTypes</a> <i>types</i>, const <a href="qclplatform.html">QCLPlatform</a> &amp; <i>platform</i> = QCLPlatform() )<tt> [static]</tt></h3>
<p>Returns a list of all OpenCL devices that match <i>types</i> on <i>platform</i> on this system. If <i>platform</i> is null, then the first platform that has devices matching <i>types</i> will be used.</p>
<p>See also <a href="qcldevice.html#allDevices">allDevices</a>().</p>
<!-- @@@devices -->
<!-- $$$doubleCapabilities[overload1]$$$doubleCapabilities -->
<h3 class="fn"><a name="doubleCapabilities"></a><a href="qcldevice.html#FloatCapability-enum">QCLDevice::FloatCapabilities</a> QCLDevice::doubleCapabilities () const</h3>
<p>Returns a set of flags that describes the floating-point capabilities of the <tt>double</tt> type on this device.</p>
<p>Returns <a href="qcldevice.html#FloatCapability-enum">QCLDevice::NotSupported</a> if operations on <tt>double</tt> are not supported by the device.</p>
<p>See also <a href="qcldevice.html#hasDouble">hasDouble</a>().</p>
<!-- @@@doubleCapabilities -->
<!-- $$$driverVersion[overload1]$$$driverVersion -->
<h3 class="fn"><a name="driverVersion"></a>QString QCLDevice::driverVersion () const</h3>
<p>Returns the driver version of this OpenCL device.</p>
<p>See also <a href="qcldevice.html#version">version</a>().</p>
<!-- @@@driverVersion -->
<!-- $$$extensions[overload1]$$$extensions -->
<h3 class="fn"><a name="extensions"></a>QStringList QCLDevice::extensions () const</h3>
<p>Returns a list of the extensions supported by this OpenCL device.</p>
<p>See also <a href="qcldevice.html#hasExtension">hasExtension</a>().</p>
<!-- @@@extensions -->
<!-- $$$floatCapabilities[overload1]$$$floatCapabilities -->
<h3 class="fn"><a name="floatCapabilities"></a><a href="qcldevice.html#FloatCapability-enum">QCLDevice::FloatCapabilities</a> QCLDevice::floatCapabilities () const</h3>
<p>Returns a set of flags that describes the floating-point capabilities of the <tt>float</tt> type on this device.</p>
<!-- @@@floatCapabilities -->
<!-- $$$globalMemoryCacheLineSize[overload1]$$$globalMemoryCacheLineSize -->
<h3 class="fn"><a name="globalMemoryCacheLineSize"></a>int QCLDevice::globalMemoryCacheLineSize () const</h3>
<p>Returns the size of a single global memory cache line in bytes.</p>
<p>See also <a href="qcldevice.html#globalMemoryCacheSize">globalMemoryCacheSize</a>().</p>
<!-- @@@globalMemoryCacheLineSize -->
<!-- $$$globalMemoryCacheSize[overload1]$$$globalMemoryCacheSize -->
<h3 class="fn"><a name="globalMemoryCacheSize"></a>quint64 QCLDevice::globalMemoryCacheSize () const</h3>
<p>Returns the size of the global memory cache in bytes.</p>
<p>See also <a href="qcldevice.html#globalMemorySize">globalMemorySize</a>() and <a href="qcldevice.html#globalMemoryCacheLineSize">globalMemoryCacheLineSize</a>().</p>
<!-- @@@globalMemoryCacheSize -->
<!-- $$$globalMemoryCacheType[overload1]$$$globalMemoryCacheType -->
<h3 class="fn"><a name="globalMemoryCacheType"></a><a href="qcldevice.html#CacheType-enum">QCLDevice::CacheType</a> QCLDevice::globalMemoryCacheType () const</h3>
<p>Returns the type of global memory cache that is supported by the device.</p>
<!-- @@@globalMemoryCacheType -->
<!-- $$$globalMemorySize[overload1]$$$globalMemorySize -->
<h3 class="fn"><a name="globalMemorySize"></a>quint64 QCLDevice::globalMemorySize () const</h3>
<p>Returns the number of bytes of global memory in the device.</p>
<p>See also <a href="qcldevice.html#globalMemoryCacheSize">globalMemoryCacheSize</a>() and <a href="qcldevice.html#localMemorySize">localMemorySize</a>().</p>
<!-- @@@globalMemorySize -->
<!-- $$$halfFloatCapabilities[overload1]$$$halfFloatCapabilities -->
<h3 class="fn"><a name="halfFloatCapabilities"></a><a href="qcldevice.html#FloatCapability-enum">QCLDevice::FloatCapabilities</a> QCLDevice::halfFloatCapabilities () const</h3>
<p>Returns a set of flags that describes the floating-point capabilities of the <tt>half</tt> type on this device.</p>
<p>Returns <a href="qcldevice.html#FloatCapability-enum">QCLDevice::NotSupported</a> if operations on <tt>half</tt> are not supported by the device.</p>
<p>See also <a href="qcldevice.html#hasHalfFloat">hasHalfFloat</a>().</p>
<!-- @@@halfFloatCapabilities -->
<!-- $$$hasCompiler[overload1]$$$hasCompiler -->
<h3 class="fn"><a name="hasCompiler"></a>bool QCLDevice::hasCompiler () const</h3>
<p>Returns true if this device has a compiler available; false otherwise.</p>
<!-- @@@hasCompiler -->
<!-- $$$hasDouble[overload1]$$$hasDouble -->
<h3 class="fn"><a name="hasDouble"></a>bool QCLDevice::hasDouble () const</h3>
<p>Returns true if this device supports the <tt>double</tt> type via the <tt>cl_khr_fp64</tt> extension; false otherwise.</p>
<!-- @@@hasDouble -->
<!-- $$$hasErrorCorrectingMemory[overload1]$$$hasErrorCorrectingMemory -->
<h3 class="fn"><a name="hasErrorCorrectingMemory"></a>bool QCLDevice::hasErrorCorrectingMemory () const</h3>
<p>Returns true if the device implements error correction on its memory areas; false otherwise.</p>
<!-- @@@hasErrorCorrectingMemory -->
<!-- $$$hasExtension[overload1]$$$hasExtensionconstchar* -->
<h3 class="fn"><a name="hasExtension"></a>bool QCLDevice::hasExtension ( const char * <i>name</i> ) const</h3>
<p>Returns true if this device has an extension called <i>name</i>; false otherwise.</p>
<p>This function is more efficient than checking for <i>name</i> in the return value from <a href="qcldevice.html#extensions">extensions</a>(), if the caller is only interested in a single extension. Use <a href="qcldevice.html#extensions">extensions</a>() to check for several extensions at once.</p>
<p>See also <a href="qcldevice.html#extensions">extensions</a>().</p>
<!-- @@@hasExtension -->
<!-- $$$hasHalfFloat[overload1]$$$hasHalfFloat -->
<h3 class="fn"><a name="hasHalfFloat"></a>bool QCLDevice::hasHalfFloat () const</h3>
<p>Returns true if this device supports operations on the <tt>half</tt> type via the <tt>cl_khr_fp16</tt> extension; false otherwise.</p>
<p>Note: <tt>half</tt> is supported by the OpenCL 1.0 core specification for data storage even if this function returns false. However, kernels can only perform arithmetic operations on <tt>half</tt> values if this function returns true.</p>
<!-- @@@hasHalfFloat -->
<!-- $$$hasImage2D[overload1]$$$hasImage2D -->
<h3 class="fn"><a name="hasImage2D"></a>bool QCLDevice::hasImage2D () const</h3>
<p>Returns true if this device has 2D image support; false otherwise.</p>
<!-- @@@hasImage2D -->
<!-- $$$hasImage3D[overload1]$$$hasImage3D -->
<h3 class="fn"><a name="hasImage3D"></a>bool QCLDevice::hasImage3D () const</h3>
<p>Returns true if this device has 3D image support; false otherwise.</p>
<!-- @@@hasImage3D -->
<!-- $$$hasNativeKernels[overload1]$$$hasNativeKernels -->
<h3 class="fn"><a name="hasNativeKernels"></a>bool QCLDevice::hasNativeKernels () const</h3>
<p>Returns true if this device has support for executing native kernels; false otherwise.</p>
<!-- @@@hasNativeKernels -->
<!-- $$$hasOutOfOrderExecution[overload1]$$$hasOutOfOrderExecution -->
<h3 class="fn"><a name="hasOutOfOrderExecution"></a>bool QCLDevice::hasOutOfOrderExecution () const</h3>
<p>Returns true if this device supports out of order execution of commands on a <a href="qclcommandqueue.html">QCLCommandQueue</a>; false otherwise.</p>
<p>See also <a href="qclcommandqueue.html#isOutOfOrder">QCLCommandQueue::isOutOfOrder</a>().</p>
<!-- @@@hasOutOfOrderExecution -->
<!-- $$$hasUnifiedMemory[overload1]$$$hasUnifiedMemory -->
<h3 class="fn"><a name="hasUnifiedMemory"></a>bool QCLDevice::hasUnifiedMemory () const</h3>
<p>Returns true if the device and the host share a unified memory address space; false otherwise.</p>
<p>Note: OpenCL 1.0 devices will usually report false from this function even if they have unified memory because the relevant device query is specific to OpenCL 1.1&#x2e;</p>
<!-- @@@hasUnifiedMemory -->
<!-- $$$hasWritableImage3D[overload1]$$$hasWritableImage3D -->
<h3 class="fn"><a name="hasWritableImage3D"></a>bool QCLDevice::hasWritableImage3D () const</h3>
<p>Returns true if this device supports writing to 3D images via the <tt>cl_khr_3d_image_writes</tt> extension; false otherwise.</p>
<!-- @@@hasWritableImage3D -->
<!-- $$$isAvailable[overload1]$$$isAvailable -->
<h3 class="fn"><a name="isAvailable"></a>bool QCLDevice::isAvailable () const</h3>
<p>Returns true if this device is available; false otherwise.</p>
<!-- @@@isAvailable -->
<!-- $$$isEmbeddedProfile[overload1]$$$isEmbeddedProfile -->
<h3 class="fn"><a name="isEmbeddedProfile"></a>bool QCLDevice::isEmbeddedProfile () const</h3>
<p>Returns true if <a href="qcldevice.html#profile">profile</a>() is <tt>EMBEDDED_PROFILE</tt>; false otherwise.</p>
<p>See also <a href="qcldevice.html#isFullProfile">isFullProfile</a>().</p>
<!-- @@@isEmbeddedProfile -->
<!-- $$$isFullProfile[overload1]$$$isFullProfile -->
<h3 class="fn"><a name="isFullProfile"></a>bool QCLDevice::isFullProfile () const</h3>
<p>Returns true if <a href="qcldevice.html#profile">profile</a>() is <tt>FULL_PROFILE</tt>; false otherwise.</p>
<p>See also <a href="qcldevice.html#isEmbeddedProfile">isEmbeddedProfile</a>().</p>
<!-- @@@isFullProfile -->
<!-- $$$isLocalMemorySeparate[overload1]$$$isLocalMemorySeparate -->
<h3 class="fn"><a name="isLocalMemorySeparate"></a>bool QCLDevice::isLocalMemorySeparate () const</h3>
<p>Returns true if the local memory on this device is in a separate dedicated storage area from global memory; false if local memory is allocated from global memory.</p>
<p>See also <a href="qcldevice.html#localMemorySize">localMemorySize</a>().</p>
<!-- @@@isLocalMemorySeparate -->
<!-- $$$isNull[overload1]$$$isNull -->
<h3 class="fn"><a name="isNull"></a>bool QCLDevice::isNull () const</h3>
<p>Returns true if this OpenCL device identifier is null.</p>
<!-- @@@isNull -->
<!-- $$$languageVersion[overload1]$$$languageVersion -->
<h3 class="fn"><a name="languageVersion"></a>QString QCLDevice::languageVersion () const</h3>
<p>Returns the highest version of the OpenCL language supported by this device's compiler. For example, <tt>OpenCL 1.1</tt>.</p>
<!-- @@@languageVersion -->
<!-- $$$localMemorySize[overload1]$$$localMemorySize -->
<h3 class="fn"><a name="localMemorySize"></a>quint64 QCLDevice::localMemorySize () const</h3>
<p>Returns the number of bytes of local memory in the device.</p>
<p>See also <a href="qcldevice.html#globalMemorySize">globalMemorySize</a>() and <a href="qcldevice.html#isLocalMemorySeparate">isLocalMemorySeparate</a>().</p>
<!-- @@@localMemorySize -->
<!-- $$$maximumAllocationSize[overload1]$$$maximumAllocationSize -->
<h3 class="fn"><a name="maximumAllocationSize"></a>quint64 QCLDevice::maximumAllocationSize () const</h3>
<p>Returns the maximum memory allocation size in bytes.</p>
<p>See also <a href="qcldevice.html#globalMemorySize">globalMemorySize</a>().</p>
<!-- @@@maximumAllocationSize -->
<!-- $$$maximumConstantArguments[overload1]$$$maximumConstantArguments -->
<h3 class="fn"><a name="maximumConstantArguments"></a>int QCLDevice::maximumConstantArguments () const</h3>
<p>Returns the maximum number of constant arguments that can be passed to a kernel.</p>
<p>See also <a href="qcldevice.html#maximumConstantBufferSize">maximumConstantBufferSize</a>().</p>
<!-- @@@maximumConstantArguments -->
<!-- $$$maximumConstantBufferSize[overload1]$$$maximumConstantBufferSize -->
<h3 class="fn"><a name="maximumConstantBufferSize"></a>quint64 QCLDevice::maximumConstantBufferSize () const</h3>
<p>Returns the maximum size for a constant buffer allocation.</p>
<p>See also <a href="qcldevice.html#maximumConstantArguments">maximumConstantArguments</a>().</p>
<!-- @@@maximumConstantBufferSize -->
<!-- $$$maximumImage2DSize[overload1]$$$maximumImage2DSize -->
<h3 class="fn"><a name="maximumImage2DSize"></a>QSize QCLDevice::maximumImage2DSize () const</h3>
<p>Returns the maximum size of 2D images that are supported by this device; or an empty QSize if images are not supported.</p>
<p>See also <a href="qcldevice.html#maximumImage3DSize">maximumImage3DSize</a>() and <a href="qcldevice.html#hasImage2D">hasImage2D</a>().</p>
<!-- @@@maximumImage2DSize -->
<!-- $$$maximumImage3DSize[overload1]$$$maximumImage3DSize -->
<h3 class="fn"><a name="maximumImage3DSize"></a><a href="qclworksize.html">QCLWorkSize</a> QCLDevice::maximumImage3DSize () const</h3>
<p>Returns the maximum size of 3D images that are supported by this device; or (0, 0, 0) if images are not supported.</p>
<p>See also <a href="qcldevice.html#maximumImage2DSize">maximumImage2DSize</a>() and <a href="qcldevice.html#hasImage3D">hasImage3D</a>().</p>
<!-- @@@maximumImage3DSize -->
<!-- $$$maximumParameterBytes[overload1]$$$maximumParameterBytes -->
<h3 class="fn"><a name="maximumParameterBytes"></a>int QCLDevice::maximumParameterBytes () const</h3>
<p>Returns the maximum number of parameter bytes that can be passed to a kernel.</p>
<!-- @@@maximumParameterBytes -->
<!-- $$$maximumReadImages[overload1]$$$maximumReadImages -->
<h3 class="fn"><a name="maximumReadImages"></a>int QCLDevice::maximumReadImages () const</h3>
<p>Returns the maximum number of image objects that can be read simultaneously by a kernel; 0 if images are not supported.</p>
<p>See also <a href="qcldevice.html#maximumWriteImages">maximumWriteImages</a>().</p>
<!-- @@@maximumReadImages -->
<!-- $$$maximumSamplers[overload1]$$$maximumSamplers -->
<h3 class="fn"><a name="maximumSamplers"></a>int QCLDevice::maximumSamplers () const</h3>
<p>Returns the maximum number of image samplers that can be used in a kernel at one time; 0 if images are not supported.</p>
<!-- @@@maximumSamplers -->
<!-- $$$maximumWorkItemSize[overload1]$$$maximumWorkItemSize -->
<h3 class="fn"><a name="maximumWorkItemSize"></a><a href="qclworksize.html">QCLWorkSize</a> QCLDevice::maximumWorkItemSize () const</h3>
<p>Returns the maximum work size for this device.</p>
<p>See also <a href="qcldevice.html#maximumWorkItemsPerGroup">maximumWorkItemsPerGroup</a>().</p>
<!-- @@@maximumWorkItemSize -->
<!-- $$$maximumWorkItemsPerGroup[overload1]$$$maximumWorkItemsPerGroup -->
<h3 class="fn"><a name="maximumWorkItemsPerGroup"></a>size_t QCLDevice::maximumWorkItemsPerGroup () const</h3>
<p>Returns the maximum number of work items in a work group executing a kernel using data parallel execution.</p>
<p>See also <a href="qcldevice.html#maximumWorkItemSize">maximumWorkItemSize</a>().</p>
<!-- @@@maximumWorkItemsPerGroup -->
<!-- $$$maximumWriteImages[overload1]$$$maximumWriteImages -->
<h3 class="fn"><a name="maximumWriteImages"></a>int QCLDevice::maximumWriteImages () const</h3>
<p>Returns the maximum number of image objects that can be written simultaneously by a kernel; 0 if images are not supported.</p>
<p>See also <a href="qcldevice.html#maximumReadImages">maximumReadImages</a>().</p>
<!-- @@@maximumWriteImages -->
<!-- $$$minimumAlignment[overload1]$$$minimumAlignment -->
<h3 class="fn"><a name="minimumAlignment"></a>int QCLDevice::minimumAlignment () const</h3>
<p>Returns the minimum alignment for any data type in bytes.</p>
<p>See also <a href="qcldevice.html#defaultAlignment">defaultAlignment</a>().</p>
<!-- @@@minimumAlignment -->
<!-- $$$name[overload1]$$$name -->
<h3 class="fn"><a name="name"></a>QString QCLDevice::name () const</h3>
<p>Returns the name of this OpenCL device.</p>
<!-- @@@name -->
<!-- $$$nativeCharVectorSize[overload1]$$$nativeCharVectorSize -->
<h3 class="fn"><a name="nativeCharVectorSize"></a>int QCLDevice::nativeCharVectorSize () const</h3>
<p>Returns the native size for vectors of type <tt>char</tt> in the device. For example, 4 indicates that 4 <tt>char</tt> values can be packed into a vector and operated on as a unit for optimal performance. Returns zero on OpenCL 1.0&#x2e;</p>
<!-- @@@nativeCharVectorSize -->
<!-- $$$nativeDoubleVectorSize[overload1]$$$nativeDoubleVectorSize -->
<h3 class="fn"><a name="nativeDoubleVectorSize"></a>int QCLDevice::nativeDoubleVectorSize () const</h3>
<p>Returns the native size for vectors of type <tt>double</tt> in the device. For example, 2 indicates that 2 <tt>double</tt> values can be packed into a vector and operated on as a unit for optimal performance. Returns zero on OpenCL 1.0, or if the device does not support <tt>double</tt>.</p>
<p>See also <a href="qcldevice.html#hasDouble">hasDouble</a>().</p>
<!-- @@@nativeDoubleVectorSize -->
<!-- $$$nativeFloatVectorSize[overload1]$$$nativeFloatVectorSize -->
<h3 class="fn"><a name="nativeFloatVectorSize"></a>int QCLDevice::nativeFloatVectorSize () const</h3>
<p>Returns the native size for vectors of type <tt>float</tt> in the device. For example, 4 indicates that 4 <tt>float</tt> values can be packed into a vector and operated on as a unit for optimal performance. Returns zero on OpenCL 1.0&#x2e;</p>
<!-- @@@nativeFloatVectorSize -->
<!-- $$$nativeHalfFloatVectorSize[overload1]$$$nativeHalfFloatVectorSize -->
<h3 class="fn"><a name="nativeHalfFloatVectorSize"></a>int QCLDevice::nativeHalfFloatVectorSize () const</h3>
<p>Returns the native size for vectors of type <tt>half</tt> in the device. For example, 2 indicates that 2 <tt>half</tt> values can be packed into a vector and operated on as a unit for optimal performance. Returns zero on OpenCL 1.0, or if the device does not support <tt>half</tt>.</p>
<p>See also <a href="qcldevice.html#hasHalfFloat">hasHalfFloat</a>().</p>
<!-- @@@nativeHalfFloatVectorSize -->
<!-- $$$nativeIntVectorSize[overload1]$$$nativeIntVectorSize -->
<h3 class="fn"><a name="nativeIntVectorSize"></a>int QCLDevice::nativeIntVectorSize () const</h3>
<p>Returns the native size for vectors of type <tt>int</tt> in the device. For example, 4 indicates that 4 <tt>int</tt> values can be packed into a vector and operated on as a unit for optimal performance. Returns zero on OpenCL 1.0&#x2e;</p>
<!-- @@@nativeIntVectorSize -->
<!-- $$$nativeLongVectorSize[overload1]$$$nativeLongVectorSize -->
<h3 class="fn"><a name="nativeLongVectorSize"></a>int QCLDevice::nativeLongVectorSize () const</h3>
<p>Returns the native size for vectors of type <tt>long</tt> in the device. For example, 2 indicates that 2 <tt>long</tt> values can be packed into a vector and operated on as a unit for optimal performance. Returns zero on OpenCL 1.0&#x2e;</p>
<!-- @@@nativeLongVectorSize -->
<!-- $$$nativeShortVectorSize[overload1]$$$nativeShortVectorSize -->
<h3 class="fn"><a name="nativeShortVectorSize"></a>int QCLDevice::nativeShortVectorSize () const</h3>
<p>Returns the native size for vectors of type <tt>short</tt> in the device. For example, 4 indicates that 4 <tt>short</tt> values can be packed into a vector and operated on as a unit for optimal performance. Returns zero on OpenCL 1.0&#x2e;</p>
<!-- @@@nativeShortVectorSize -->
<!-- $$$platform[overload1]$$$platform -->
<h3 class="fn"><a name="platform"></a><a href="qclplatform.html">QCLPlatform</a> QCLDevice::platform () const</h3>
<p>Returns the platform identifier for this device.</p>
<!-- @@@platform -->
<!-- $$$preferredCharVectorSize[overload1]$$$preferredCharVectorSize -->
<h3 class="fn"><a name="preferredCharVectorSize"></a>int QCLDevice::preferredCharVectorSize () const</h3>
<p>Returns the preferred size for vectors of type <tt>char</tt> in the device. For example, 4 indicates that 4 <tt>char</tt> values can be packed into a vector and operated on as a unit for optimal performance.</p>
<!-- @@@preferredCharVectorSize -->
<!-- $$$preferredDoubleVectorSize[overload1]$$$preferredDoubleVectorSize -->
<h3 class="fn"><a name="preferredDoubleVectorSize"></a>int QCLDevice::preferredDoubleVectorSize () const</h3>
<p>Returns the preferred size for vectors of type <tt>double</tt> in the device. For example, 2 indicates that 2 <tt>double</tt> values can be packed into a vector and operated on as a unit for optimal performance.</p>
<p>Returns zero if the device does not support <tt>double</tt>.</p>
<p>See also <a href="qcldevice.html#hasDouble">hasDouble</a>().</p>
<!-- @@@preferredDoubleVectorSize -->
<!-- $$$preferredFloatVectorSize[overload1]$$$preferredFloatVectorSize -->
<h3 class="fn"><a name="preferredFloatVectorSize"></a>int QCLDevice::preferredFloatVectorSize () const</h3>
<p>Returns the preferred size for vectors of type <tt>float</tt> in the device. For example, 4 indicates that 4 <tt>float</tt> values can be packed into a vector and operated on as a unit for optimal performance.</p>
<!-- @@@preferredFloatVectorSize -->
<!-- $$$preferredHalfFloatVectorSize[overload1]$$$preferredHalfFloatVectorSize -->
<h3 class="fn"><a name="preferredHalfFloatVectorSize"></a>int QCLDevice::preferredHalfFloatVectorSize () const</h3>
<p>Returns the preferred size for vectors of type <tt>half</tt> in the device. For example, 2 indicates that 2 <tt>half</tt> values can be packed into a vector and operated on as a unit for optimal performance.</p>
<p>Returns zero if the device does not support <tt>half</tt>, or the device does not support OpenCL 1.1&#x2e;</p>
<p>See also <a href="qcldevice.html#hasHalfFloat">hasHalfFloat</a>().</p>
<!-- @@@preferredHalfFloatVectorSize -->
<!-- $$$preferredIntVectorSize[overload1]$$$preferredIntVectorSize -->
<h3 class="fn"><a name="preferredIntVectorSize"></a>int QCLDevice::preferredIntVectorSize () const</h3>
<p>Returns the preferred size for vectors of type <tt>int</tt> in the device. For example, 4 indicates that 4 <tt>int</tt> values can be packed into a vector and operated on as a unit for optimal performance.</p>
<!-- @@@preferredIntVectorSize -->
<!-- $$$preferredLongVectorSize[overload1]$$$preferredLongVectorSize -->
<h3 class="fn"><a name="preferredLongVectorSize"></a>int QCLDevice::preferredLongVectorSize () const</h3>
<p>Returns the preferred size for vectors of type <tt>long</tt> in the device. For example, 2 indicates that 2 <tt>long</tt> values can be packed into a vector and operated on as a unit for optimal performance.</p>
<!-- @@@preferredLongVectorSize -->
<!-- $$$preferredShortVectorSize[overload1]$$$preferredShortVectorSize -->
<h3 class="fn"><a name="preferredShortVectorSize"></a>int QCLDevice::preferredShortVectorSize () const</h3>
<p>Returns the preferred size for vectors of type <tt>short</tt> in the device. For example, 4 indicates that 4 <tt>short</tt> values can be packed into a vector and operated on as a unit for optimal performance.</p>
<!-- @@@preferredShortVectorSize -->
<!-- $$$profile[overload1]$$$profile -->
<h3 class="fn"><a name="profile"></a>QString QCLDevice::profile () const</h3>
<p>Returns the profile that is implemented by this OpenCL device, usually <tt>FULL_PROFILE</tt> or <tt>EMBEDDED_PROFILE</tt>.</p>
<p>See also <a href="qcldevice.html#isFullProfile">isFullProfile</a>() and <a href="qcldevice.html#isEmbeddedProfile">isEmbeddedProfile</a>().</p>
<!-- @@@profile -->
<!-- $$$profilingTimerResolution[overload1]$$$profilingTimerResolution -->
<h3 class="fn"><a name="profilingTimerResolution"></a>quint64 QCLDevice::profilingTimerResolution () const</h3>
<p>Returns the resolution of the device profiling timer in nanoseconds.</p>
<p>See also <a href="qclevent.html#finishTime">QCLEvent::finishTime</a>().</p>
<!-- @@@profilingTimerResolution -->
<!-- $$$vendor[overload1]$$$vendor -->
<h3 class="fn"><a name="vendor"></a>QString QCLDevice::vendor () const</h3>
<p>Returns the vendor of this OpenCL device.</p>
<!-- @@@vendor -->
<!-- $$$vendorId[overload1]$$$vendorId -->
<h3 class="fn"><a name="vendorId"></a>uint QCLDevice::vendorId () const</h3>
<p>Returns the vendor's identifier for this device.</p>
<!-- @@@vendorId -->
<!-- $$$version[overload1]$$$version -->
<h3 class="fn"><a name="version"></a>QString QCLDevice::version () const</h3>
<p>Returns the OpenCL version that is implemented by this OpenCL device, usually something like <tt>OpenCL 1.0</tt>.</p>
<p>The <a href="qcldevice.html#versionFlags">versionFlags</a>() function parses the version into flag bits that are easier to test than the string returned by version().</p>
<p>See also <a href="qcldevice.html#versionFlags">versionFlags</a>() and <a href="qcldevice.html#driverVersion">driverVersion</a>().</p>
<!-- @@@version -->
<!-- $$$versionFlags[overload1]$$$versionFlags -->
<h3 class="fn"><a name="versionFlags"></a><a href="qclplatform.html#VersionFlag-enum">QCLPlatform::VersionFlags</a> QCLDevice::versionFlags () const</h3>
<p>Returns the OpenCL versions supported by this device.</p>
<p>See also <a href="qcldevice.html#version">version</a>() and <a href="qclplatform.html#versionFlags">QCLPlatform::versionFlags</a>().</p>
<!-- @@@versionFlags -->
<!-- $$$operator!=[overload1]$$$operator!=constQCLDevice& -->
<h3 class="fn"><a name="operator-not-eq"></a>bool QCLDevice::operator!= ( const QCLDevice &amp; <i>other</i> ) const</h3>
<p>Returns true if this OpenCL device identifier is not the same as <i>other</i>; false otherwise.</p>
<p>See also <a href="qcldevice.html#operator-eq-eq">operator==</a>().</p>
<!-- @@@operator!= -->
<!-- $$$operator==[overload1]$$$operator==constQCLDevice& -->
<h3 class="fn"><a name="operator-eq-eq"></a>bool QCLDevice::operator== ( const QCLDevice &amp; <i>other</i> ) const</h3>
<p>Returns true if this OpenCL device identifier is the same as <i>other</i>; false otherwise.</p>
<p>See also <a href="qcldevice.html#operator-not-eq">operator!=</a>().</p>
<!-- @@@operator== -->
</div>
<p /><address><hr /><div align="center">
<table width="100%" cellspacing="0" border="0"><tr class="address">
<td align="left">Copyright &copy; 2010 Nokia Corporation</td>
<td align="right">QtOpenCL Documentation</td>
</tr></table></div></address>  <script src="scripts/functions.js" type="text/javascript"></script>
  <script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-4457116-5']);
  _gaq.push(['_trackPageview']);
  (function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
  </script>
</body>
</html>
